var mongoose      = require('mongoose'),
    comValidators = require('../../util/common-validation'),
    Schema = mongoose.Schema,
    config = require('../../util').config;

// WeiXin User
var weixinuser = new Schema({
  subscribe     : {type: Number, default: 1},//用户是否订阅该公众号标识，值为0时，代表此用户没有关注该公众号，拉取不到其余信息。
  openid        : {
    type    : String,
    unique  : true,
    validate: [comValidators.emptyValidator, 'openid can not be empty']
  },
  promotion_code:  {type: String, default: ''},
  reference_code:  {type: String, default: ''},
  nickname      : {type: String, default: ''},
  sex           : {type: [Number, "sex can't be String"]},// 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
  language      : {type: String, default: ''},
  city          : {type: String, default: ''},
  province      : {type: String, default: ''},
  country       : {type: String, default: ''},
  headimgurl    : {type: String, default: ''},// 用户头像，最后一个数值代表正方形头像大小（有0、46、64、96、132数值可选，0代表640*640正方形头像），用户没有头像时该项为空
  subscribe_time: {type: Number, default: 0},// 用户关注时间，为时间戳。如果用户曾多次关注，则取最后关注时间
  invalid_flag  : {type: Number, default: 0},// 0:有效，1，无效
  user_type     : {type: Number, default: 0}, // 用户类型 0: 免费用户, 1: 基础, 2: 高级, 3: 付费
  point         : {type: Number, default: 0}, // 用户积分
  due_date      : {type: Number, default: 0},  // 到期时间(相对于注册时间的时间戳，单位为秒)
  register_date      : {type: Number, default: 0},  // 注册时间(单位为秒)
  email         : { // Null able and Unique if not null
    type    : String,
    trim: true,
    index: true,
    unique: true,
    sparse: true
  },
  qrcode: {type: String, default: ''},
  certificated: {type:Boolean,default:false}
});

module.exports = mongoose.model('Weixinuser', weixinuser);